#include<iostream>
#include<vector>
#include<cstdlib>
#include<ctime>
#include "BST.h"

template <class TYPE>
class ARRAY{
    private:
    int num;
    std::vector<TYPE> array;
    public:
    ARRAY() {num=0;};
    ~ARRAY() {array.clear();};
    void set(int _n);
    void reset();
    void sorted_print() const;
};

template <class TYPE>
void ARRAY<TYPE>::set(int _n)
{
    num=_n;
    for(int i=0;i<num;i++){
        TYPE k;
        std::cin>>k;
        array.push_back(k);
    }
};

template <class TYPE>
void ARRAY<TYPE>::reset()
{
    TYPE p[num];
    std::vector<int> index;
    std::vector<int> indexnew;
    for(int i=0;i<num;i++){
        index.push_back(i);
        p[i]=array[i];
    }
    array.clear();
    for(int i=num;i>0;i--){
        std::srand(unsigned(time(NULL)));
        int k=rand()%i;
        indexnew.push_back(index[k]);
        index.erase(index.begin()+k);
    }
    for(int i=0;i<num;i++)
        array.push_back(p[indexnew[i]]);
};

template<class TYPE>
void ARRAY<TYPE>::sorted_print() const
{
    BinaryTree<TYPE> arr;
    for(int i=0;i<num;i++)
    arr.insert(array[i]);
    arr.inorder_walk();
}

int main (int argc, char* argv[]){
    int n;
    std::cin>>n;
    ARRAY<int> arr;
    arr.set(n);
    arr.reset();
    arr.sorted_print();
    return 0;
}